package org.patterns.behavior.iterator;


import java.util.List;

//商品迭代器：具体迭代器
public class ProductIterator implements AbstractIterator {
    private List<Object> products;
    private int startCursor; //定义一个游标，用于记录正向遍历的位置
    private int endCursor; //定义一个游标，用于记录逆向遍历的位置

    public ProductIterator(ProductList list) {
        this.products = list.getObjects(); //获取集合对象
        startCursor = 0; //设置正向遍历游标的初始值
        endCursor = products.size() - 1; //设置逆向遍历游标的初始值
    }

    public void next() {
        if (startCursor < products.size()) {
            startCursor++;
        }
    }

    public boolean isLast() {
        return (startCursor == products.size());
    }

    public void previous() {
        if (endCursor > -1) {
            endCursor--;
        }
    }

    public boolean isFirst() {
        return (endCursor == -1);
    }

    public Object getNextItem() {
        // 检查游标有效性：仅在合法范围内返回元素
        return (startCursor >= 0 && startCursor < products.size()) ?
                products.get(startCursor) : null;
    }

    public Object getPreviousItem() {
        // 检查游标有效性：包含空列表的边界处理
        return (endCursor >= 0 && endCursor < products.size()) ?
                products.get(endCursor) : null;
    }
}
